package adp.barometer;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ConfigItemActivity extends Activity implements OnClickListener {

	public static final int MANTISA_LENGTH = 3;
	public static final int MAX_DECIMALS = 2;
	
	TextView tvPrecio, tvCantidad, tvPersonas;
	TextView textPrecioDialog;
    Dialog dialog;
    boolean hasComa, isFirst;
    int numDecimals;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.config_item);
        
        tvPrecio = (TextView)findViewById(R.id.txtPrice);
        tvCantidad = (TextView)findViewById(R.id.txtCantidad);
        tvPersonas = (TextView)findViewById(R.id.txtPersonas);
        
        tvPrecio.setText("1,5 " + getString(R.string.simbolo_batman));
        tvCantidad.setText(((Integer)2).toString());
        tvPersonas.setText("4");
        
        dialog = new Dialog(ConfigItemActivity.this);
        dialog.setContentView(R.layout.price_selector);
        dialog.setTitle("Selecciona el precio");
        
        textPrecioDialog = (TextView)dialog.findViewById(R.id.txtPrecioDialog);
        
        setDialogListeners();
    }
	
	private void setDialogListeners() {
		int[] dialog_buttons = new int[] {
				R.id.button0,
				R.id.button1, 
				R.id.button2, 
				R.id.button3, 
				R.id.button4, 
				R.id.button5, 
				R.id.button6, 
				R.id.button7, 
				R.id.button8, 
				R.id.button9,
				R.id.buttonComa,
				R.id.buttonOK
		};
		
		for (int i = 0; i < dialog_buttons.length; i++){
			Button btn = (Button)dialog.findViewById(dialog_buttons[i]);
			btn.setOnClickListener(this);
		}
	}
	
	private void addNumero(int i) {
		String s = textPrecioDialog.getText().toString();
		if (isFirst){
			s = "";
			isFirst = i == 0;
			textPrecioDialog.setText(s + i);
		} else if ((numDecimals < 0 && s.length() < MANTISA_LENGTH) || (numDecimals >= 0 && numDecimals < MAX_DECIMALS)) {
			textPrecioDialog.setText(s + i);
			if (numDecimals >= 0) numDecimals++;
		}
	}

	@Override
	public void onClick(View v) {
		switch(v.getId()) {
		case R.id.itemImage:
			break;
		case R.id.btnPrice:
			textPrecioDialog.setText("0");
			hasComa = false;
			isFirst = true;
			numDecimals = -1;
	        dialog.show();
			break;
		case R.id.btnCantidad:
			break;
		case R.id.btnPersonas:
			break;
		case R.id.OKButton:
			finish();
			break;
		case R.id.button0:
			addNumero(0);
			break;
		case R.id.button1:
			addNumero(1);
			break;
		default:
			onDialogClick(v);
			break;
		}
	}
	
	public void onDialogClick(View v){
		switch(v.getId()) {
		case R.id.button2:
			addNumero(2);
			break;
		case R.id.button3:
			addNumero(3);
			break;
		case R.id.button4:
			addNumero(4);
			break;
		case R.id.button5:
			addNumero(5);
			break;
		case R.id.button6:
			addNumero(6);
			break;
		case R.id.button7:
			addNumero(7);
			break;
		case R.id.button8:
			addNumero(8);
			break;
		case R.id.button9:
			addNumero(9);
			break;
		case R.id.buttonComa:
			if (!hasComa){
        		String s = textPrecioDialog.getText().toString();
        		textPrecioDialog.setText(s + ",");
        		hasComa = true;
        		isFirst = false;
        		numDecimals++;
    		}
			break;
		case R.id.buttonOK:
			tvPrecio.setText(textPrecioDialog.getText().toString() + " " + getString(R.string.simbolo_batman));
    		dialog.cancel();
			break;
		}
	}
}
